package com.example.hxds.bff.driver.feign;

import com.example.hxds.bff.driver.controller.form.*;
import com.example.hxds.common.util.R;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import javax.validation.Valid;
import java.util.HashMap;

@FeignClient(value = "hxds-odr")
public interface OdrServiceApi {

    @PostMapping("/order/searchDriverTodayBusinessData")
    public R searchDriverTodayBusinessData(SearchDriverTodayBusinessDataForm form);

    @PostMapping("/order/searchDriverMonthByPositiveAndNegativeReviews")
    public R searchDriverMonthByPositiveAndNegativeReviews(@RequestBody @Valid SearchDriverTodayBusinessDataForm form);

    @PostMapping("/order/searchDriverYearBusinessMonth")
    public R searchDriverYearBusinessMonth(@RequestBody @Valid SearchDriverTodayBusinessDataForm form);

    @PostMapping("/order/searchDriverYearByMonthlyOrderSplittingPersonalIncomeTax")
    public R searchDriverYearByMonthlyOrderSplittingPersonalIncomeTax(@RequestBody @Valid SearchDriverTodayBusinessDataForm form);

    @PostMapping("/order/acceptNewOrder")
    public R acceptNewOrder(AcceptNewOrderForm form);

    @PostMapping("/order/searchDriverExecuteOrder")
    public R searchDriverExecuteOrder(SearchDriverExecuteOrderForm form);


    @PostMapping("/order/searchDriverCurrentOrder")
    public R searchDriverCurrentOrder(SearchDriverCurrentOrderForm form);

    @PostMapping("/order/searchOrderForMoveById")
    public R searchOrderForMoveById(SearchOrderForMoveByIdForm form);


    @PostMapping("/order/arriveStartPlace")
    public R arriveStartPlace(@RequestBody @Valid ArriveStartPlaceForm form);

    @PostMapping("/order/startDriving")
    public R startDriving(@RequestBody @Valid StartDrivingForm form);

    @PostMapping("/order/updateOrderStatus")
    public R updateOrderStatus(UpdateOrderStatusForm form);

    //查询司机是否关联某订单
    @PostMapping("/order/validDriverOwnOrder")
    public R validDriverOwnOrder(@RequestBody @Valid ValidDriverOwnOrderForm form);

    @PostMapping("/order/searchSettlementNeedData")
    public R searchSettlementNeedData(@RequestBody @Valid SearchSettlementNeedDataForm form);


    @PostMapping("/bill/updateBillFee")
    public R updateBillFee(@RequestBody @Valid UpdateBillFeeForm form);


    @PostMapping("/bill/searchReviewDriverOrderBill")
    public R searchReviewDriverOrderBill(@RequestBody @Valid SearchReviewDriverOrderBillForm form);


    //查询订单状态
    @PostMapping("/order/searchOrderStatus")
    public R searchOrderStatus(SearchOrderStatusForm form);

    //司机回调查询支付结果 ,也是查询乘客是否付款
    @PostMapping("/order/updateOrderAboutPayment")
    public R updateOrderAboutPayment(UpdateOrderAboutPaymentForm form);

    //查询订单分页记录
    @PostMapping("/order/searchDriverOrderByPage")
    public R searchDriverOrderByPage(@RequestBody @Valid SearchDriverOrderByPageForm form);


    //根据订单ID查询评价
    @PostMapping("/comment/searchCommentByOrderId")
    public R searchCommentByOrderId(@RequestBody @Valid SearchCommentByOrderIdForm form);
    
    //根据ID查询订单信息
    @PostMapping("/order/searchOrderById")
    public R searchOrderById(@RequestBody @Valid SearchOrderByIdForm form);
}